﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using KaartenLib;

namespace WindowsFormsApplication2
{
    public partial class AanmaakForm1 : Form
    {     

        /*List<Kaart> kaartenlijst;
        String datum;
        int moeilijkheid;
        int maxscore;
        List<String> leerlingen;           
        */

        public int aantalOefeningen;
        private DatabaseActies dbActies;

        public AanmaakForm1()
        {
            dbActies = new DatabaseActies();            
            InitializeComponent();
            this.aantalOefeningen = 0;
        }

        private void AanmaakForm1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'wiskundeOefeningenDataSet.Leerling' table. You can move, or remove it, as needed.
            this.leerlingTableAdapter.Fill(this.wiskundeOefeningenDataSet.Leerling);

        }


        private void verder1_Click(object sender, EventArgs e)
        {
            if (dateTimePicker1.Value.Date.CompareTo(System.DateTime.Today) == -1)
            {
                MessageBox.Show("Kies geen datum in het verleden aub!");
            }
            else if (cmbMoeilijkheidsgraad.SelectedIndex == -1 && cmbMaximumscore.SelectedIndex == -1)
            {
                MessageBox.Show("Kies een correcte moeilijkheidsgraad en score aub!");
            }
            else if (cmbMoeilijkheidsgraad.SelectedIndex == -1)
            {
                MessageBox.Show("Kies een correcte moeilijkheidsgraad aub!");
            }
            else if (cmbMaximumscore.SelectedIndex == -1)
            {
                MessageBox.Show("Kies een correcte score aub!");
            }
            else
            {
                dbActies.Datum = dateTimePicker1.Value;
                dbActies.Moeilijkheid = Convert.ToInt16(cmbMoeilijkheidsgraad.SelectedItem);
                dbActies.Maxscore = Convert.ToInt16(cmbMaximumscore.SelectedItem);

                showStep2();                                
            }
        }

        private void buttonBack1_Click(object sender, EventArgs e)
        {
            this.Hide();
        }



        #region step2
        private void showStep2()
        {

            this.Text = "Nieuwe opdracht toevoegen (stap 2)";
            progressBar1.Value = 33; 
            buttonBack2.Visible = true;
            btnAutogenereren.Visible = true;
            btnManueelgenereren.Visible = true;
            //buttonVerder2.Visible = true;

            //stap 1 afzetten
            buttonBack1.Visible = false;
            buttonVerder1.Visible = false;
            label1.Visible = false;
            label2.Visible = false;
            label3.Visible = false;
            cmbMaximumscore.Visible = false;
            cmbMoeilijkheidsgraad.Visible = false;
            dateTimePicker1.Visible = false;
        }
        private void btnManueelgenereren_Click(object sender, EventArgs e)
        {                       
            ManueelIngevenOpdrachtForm f = new ManueelIngevenOpdrachtForm(ref dbActies);
            f.aanmaak = this;
            f.StartPosition = FormStartPosition.CenterParent;
            f.Show();            
            
        }

        public void opdrachtIngevoerd()
        {
            buttonVerder2.Visible = true;            
        }

        private void btnAutogenereren_Click(object sender, EventArgs e)
        {
            Oefening oef;
            KaartSpel spel;
            Kaart k;
            while (aantalOefeningen < dbActies.Maxscore)
            {
                //TODO: ik moet deze messagebox tonen om t programma te vertragen, anders gaat hij vanaf de 2e oefening steeds dezelfde in db stoppe (denk dat het hieraan ligt)
                MessageBox.Show((aantalOefeningen + 1) + "e oefening is gemaakt!");
                spel = new KaartSpel();
                spel.Schudden();
                oef = new Oefening();
                k = spel.TrekBovensteKaart();
                oef.Kaartenlijst.Add(k);
                k = spel.TrekBovensteKaart();
                oef.Kaartenlijst.Add(k);

                if (dbActies.Moeilijkheid >= 2)
                {
                    oef.Kaartenlijst.Add(spel.TrekBovensteKaart());
                }
                if (dbActies.Moeilijkheid == 3)
                {
                    oef.Kaartenlijst.Add(spel.TrekBovensteKaart());
                }              

                aantalOefeningen++;
                dbActies.Oefeningen.Add(oef);
            }
            buttonVerder2.Visible = true;
        }             

        private void buttonVerder2_Click(object sender, EventArgs e)
        {
            showStep3();
        }

        private void buttonBack2_Click(object sender, EventArgs e)
        {//return naar stap 1
            this.Text = "Nieuwe opdracht toevoegen (stap 1)";
            progressBar1.Value = 0;
            aantalOefeningen = 0;

            dbActies.Oefeningen = new List<Oefening>();

            buttonBack2.Visible = false;
            buttonVerder2.Visible = false;
            btnAutogenereren.Visible = false;
            btnManueelgenereren.Visible = false;

            //stap1 opzetten
            buttonBack1.Visible = true;
            buttonVerder1.Visible = true;
            label1.Visible = true;
            label2.Visible = true;
            label3.Visible = true;
            cmbMaximumscore.Visible = true;
            cmbMoeilijkheidsgraad.Visible = true;
            dateTimePicker1.Visible = true;
        }

        #endregion

        #region stap3

        private void showStep3()
        {
            this.Text = "Nieuwe opdracht toevoegen (stap 3)";
            progressBar1.Value = 66;

            //disable stap2            
            buttonBack2.Visible = false;
            buttonVerder2.Visible = false;
            btnAutogenereren.Visible = false;
            btnManueelgenereren.Visible = false;

            buttonBack3.Visible = true;
            btnKlas.Visible = true;
            btnLeerlingen.Visible = true;
        }


        private void btnLeerlingen_Click(object sender, EventArgs e)
        {
            KiesLeerlingenForm f = new KiesLeerlingenForm(ref dbActies);
            f.aanmaak = this;
            f.Show();                                  
        }

        private void btnKlas_Click(object sender, EventArgs e)
        {
            KiesKlasForm f = new KiesKlasForm(ref dbActies);
            f.aanmaak = this;
            f.Show();
        }


        public void gekozen()
        {
            buttonVerder3.Visible = true;
        }

        private void buttonBack3_Click(object sender, EventArgs e)
        {//return naar stap 2
            this.Text = "Nieuwe opdracht toevoegen (stap 2)";
            progressBar1.Value = 33;

            //disable stap2            
            buttonBack2.Visible = true;
            buttonVerder2.Visible = true;
            btnAutogenereren.Visible = true;
            btnManueelgenereren.Visible = true;
            buttonBack3.Visible = false;
            btnKlas.Visible = false;
            btnLeerlingen.Visible = false;
        }

        private void buttonVerder3_Click(object sender, EventArgs e)
        {
            dbActies.insertIntoDatabank();
            buttonBack3.Visible = false;
            btnKlas.Visible = false;
            btnLeerlingen.Visible = false;
            buttonVerder3.Visible = false;
            labelVoltooid.Visible = true;
            labelVoltooid.Text = dbActies.vraagVoltooidText();
            buttonEindigen.Visible = true;
            this.Text = "Nieuwe opdracht toevoegen voltooid!";
            progressBar1.Value = 100;
        }

        #endregion        

        #region final step
        private void buttonEindigen_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        #endregion
    }
}
